﻿using System.Collections.Generic;

namespace com.binance.client.model.trade
{
	using BinanceApiConstants = com.binance.client.constant.BinanceApiConstants;
	using ToStringBuilder = org.apache.commons.lang3.builder.ToStringBuilder;



	
	public class AccountInformation
	{

		private bool? canDeposit;

		private bool? canTrade;

		private bool? canWithdraw;

		private decimal feeTier;

		private decimal maxWithdrawAmount;

		private decimal totalInitialMargin;

		private decimal totalMaintMargin;

		private decimal totalMarginBalance;

		private decimal totalOpenOrderInitialMargin;

		private decimal totalPositionInitialMargin;

		private decimal totalUnrealizedProfit;

		private decimal totalWalletBalance;

		private long? updateTime;

		private IList<Asset> assets;

		private IList<Position> positions;

		public virtual bool? CanDeposit
		{
			get
			{
				return canDeposit;
			}
			set
			{
				this.canDeposit = value;
			}
		}


		public virtual bool? CanTrade
		{
			get
			{
				return canTrade;
			}
			set
			{
				this.canTrade = value;
			}
		}


		public virtual bool? CanWithdraw
		{
			get
			{
				return canWithdraw;
			}
			set
			{
				this.canWithdraw = value;
			}
		}


		public virtual decimal FeeTier
		{
			get
			{
				return feeTier;
			}
			set
			{
				this.feeTier = value;
			}
		}


		public virtual decimal MaxWithdrawAmount
		{
			get
			{
				return maxWithdrawAmount;
			}
			set
			{
				this.maxWithdrawAmount = value;
			}
		}


		public virtual decimal TotalInitialMargin
		{
			get
			{
				return totalInitialMargin;
			}
			set
			{
				this.totalInitialMargin = value;
			}
		}


		public virtual decimal TotalMaintMargin
		{
			get
			{
				return totalMaintMargin;
			}
			set
			{
				this.totalMaintMargin = value;
			}
		}


		public virtual decimal TotalMarginBalance
		{
			get
			{
				return totalMarginBalance;
			}
			set
			{
				this.totalMarginBalance = value;
			}
		}


		public virtual decimal TotalOpenOrderInitialMargin
		{
			get
			{
				return totalOpenOrderInitialMargin;
			}
			set
			{
				this.totalOpenOrderInitialMargin = value;
			}
		}


		public virtual decimal TotalPositionInitialMargin
		{
			get
			{
				return totalPositionInitialMargin;
			}
			set
			{
				this.totalPositionInitialMargin = value;
			}
		}


		public virtual decimal TotalUnrealizedProfit
		{
			get
			{
				return totalUnrealizedProfit;
			}
			set
			{
				this.totalUnrealizedProfit = value;
			}
		}


		public virtual decimal TotalWalletBalance
		{
			get
			{
				return totalWalletBalance;
			}
			set
			{
				this.totalWalletBalance = value;
			}
		}


		public virtual long? UpdateTime
		{
			get
			{
				return updateTime;
			}
			set
			{
				this.updateTime = value;
			}
		}


		public virtual IList<Asset> Assets
		{
			get
			{
				return assets;
			}
			set
			{
				this.assets = value;
			}
		}


		public virtual IList<Position> Positions
		{
			get
			{
				return positions;
			}
			set
			{
				this.positions = value;
			}
		}


		public override string ToString()
		{
			return (new ToStringBuilder(this, BinanceApiConstants.TO_STRING_BUILDER_STYLE)).append("canDeposit", canDeposit).append("canTrade", canTrade).append("canWithdraw", canWithdraw).append("feeTier", feeTier).append("maxWithdrawAmount", maxWithdrawAmount).append("totalInitialMargin", totalInitialMargin).append("totalMaintMargin", totalMaintMargin).append("totalMarginBalance", totalMarginBalance).append("totalOpenOrderInitialMargin", totalOpenOrderInitialMargin).append("totalPositionInitialMargin", totalPositionInitialMargin).append("totalUnrealizedProfit", totalUnrealizedProfit).append("totalWalletBalance", totalWalletBalance).append("updateTime", updateTime).append("assets", assets).append("positions", positions).ToString();
		}
	}

}